//Task.hpp文件

#pragma once

#include<iostream>
#include<vector>
#include<ctime>

//void(*)() : *表示为指针类型，()表示没有任何参数，void表示函数无返回值
//将void(*)() 重命名为task_T
//task_t 可以指向任何无参数无返回值的函数
typedef void (*task_t) (); 

//任务
void LogView()
{
    std::cout << "这是一个查看日志的任务" << std::endl;
}
void Download()
{
    std::cout << "这是一个下载的任务" << std::endl;
}
void Delete()
{
    std::cout << "这是一个删除的任务" << std::endl;
}

class TaskManager
{
public:
    TaskManager()
    {
        srand((unsigned int)time(nullptr));//生成随机数的种子
    }
    //注册——实际上就是入数组进行组织
    void TaskRegister(task_t t)
    {
        _tasks.push_back(t);
    }
    //生成任务码
    int Taskcode()
    {
        int taskcode = rand() % _tasks.size();//不越界
        return taskcode;
    }
    //执行任务
    void Execute(int taskcode)
    {
        _tasks[taskcode]();//函数名接上()才是调用这个函数
    }
    ~TaskManager(){}
private:
    std::vector<task_t> _tasks;
};

